package dominio;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Transient;

@Entity
@Table(name="ordenesCompra")
public class OrdenCompra implements Serializable{
	
	@Transient  
	private static final long serialVersionUID = 1L;
	

	private Integer id;
	private Proveedor proveedor;
	private List<Item> items; 
	private Float monto;
	private Date fecha;
	private CondicionCompra condicionCompra;
	
	public OrdenCompra(){
		monto = (float)0;
	}
	
	
	@Id 
    @GeneratedValue( strategy = GenerationType.IDENTITY)
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	
	public Float getMonto() {
		return monto;
	}
	public void setMonto(Float monto) {
		this.monto = monto;
	}

	@ManyToOne
	@JoinColumn(name = "idProveedor")
	public Proveedor getProveedor() {
		return proveedor;
	}	

	public void setProveedor(Proveedor proveedor) {
		this.proveedor = proveedor;
	}
	
	@OneToMany(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
    @JoinColumn(name="idOrdenCompra")
	public List<Item> getItems() {
		return items;
	}
	public void setItems(List<Item> items) {
		this.items = items;
	}

	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		OrdenCompra other = (OrdenCompra) obj;
		if (proveedor == null) {
			if (other.proveedor != null)
				return false;
		} else if (!proveedor.equals(other.proveedor))
			return false;
		return true;
	}


	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}


	public Date getFecha() {
		return fecha;
	}

	@OneToOne
	public CondicionCompra getCondicionCompra() {
		return condicionCompra;
	}
	public void setCondicionCompra(CondicionCompra condicionCompra) {
		this.condicionCompra = condicionCompra;
	}	
	
}
